import java.util.*;
//力扣47. 全排列 II
class Solution {
    public List<List<Integer>> permuteUnique(int[] nums) {
        List<List<Integer>> res=new ArrayList<>();
        if(nums.length==0){
            return res;
        }
        //让相同数能相邻在一块
        Arrays.sort(nums);
        int n=nums.length;
        boolean[] used = new boolean[n];
        List<Integer> path=new ArrayList<>();
        dfs(n,0,used,path,nums,res);
        return res;
    }
    public void dfs(int n,int len,boolean[] used,List<Integer> path,int[] nums, List<List<Integer>> res){
        if(len==n){
            res.add(new ArrayList<>(path));
            return;
        }
        for(int i=0;i<n;i++){
            if(used[i]==true){
                continue;
            }
            //i>0避免越界，如果当前元素和上一个元素相同并且上一个元素还没用过，那么就跳过
            if (i > 0 && nums[i] == nums[i - 1] && !used[i - 1]) continue;//跳过重复元素
            path.add(nums[i]);
            used[i]=true;
            dfs(n,len+1,used,path,nums,res);
            path.remove(path.size() - 1);
            used[i]=false;

        }
    }
}


//力扣11. 盛最多水的容器
class Solution1 {
    public int maxArea(int[] height) {
        int l=0;
        int r=height.length-1;
        int res=0;
        while(r>l){
            res=Math.max((r-l)*Math.min(height[l],height[r]),res);
            //让小的一方++或者--
            if(height[l]>height[r]){
                r--;
            }else{
                l++;
            }
        }
        return res;
    }
}